﻿using System;

namespace Wombat.Core.Services
{
    public interface IObservationManager
    {
        IDisposable Subscribe<T>(IUniqueIdentifiable publisherPort, string pattern, IObserver<T> observer) where T : ITagValue;

        void Register<T>(IUniqueIdentifiable publisherPort) where T : ITagValue;
        void OnNext<T>(IUniqueIdentifiable publisherPort, T data) where T: ITagValue;
        void OnError(IUniqueIdentifiable publisherPort, Exception error);
        void OnCompleted(IUniqueIdentifiable publisherPoirt);
    }
}